package com.abstracted;

import java.util.Arrays;

public class ToolSon extends Tool {

    //查询数组中所有元素
    @Override
    public void show(int[] arr) {
        System.out.println(Arrays.toString(arr));
    }

    //查询元素在数组中位置
    @Override
    public void find(int[] arr, int key) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == key) {
                System.out.println();
                System.out.println("您想要查找的元素：" + key + "在数组中的索引为：" + i);
                return;
            }
        }
        System.out.println("数组中不存在" + key);
    }

    //数组反转之后返回
    @Override
    public int[] reverse(int[] arr) {
        for (int i = 0; i < arr.length / 2; i++) {//中间为引，将头尾交换
            int temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = temp;
        }
        return arr;
    }

    //删除数组中指定索引位置元素
    @Override
    public int[] delete(int[] arr, int index) {
        //新建一个数组
        int[] newArr = new int[arr.length - 1];
        //对索引判断
        if (index >= 0 && index < arr.length) {
            //循环取索引前的值
            for (int i = 0; i < index; i++) {
                newArr[i] = arr[i];
            }
            //循环取索引后的值
            for (int i = index; i < arr.length - 1; i++) {
                newArr[i] = arr[i + 1];
            }
            System.out.println("删除成功");
            System.out.println("被删除的元素为：" + arr[index]);
            //返回新数组
            return newArr;
        }
        System.out.println("删除失败，索引越界");
        return null;
    }

    //向数组中指定索引添加元素
    @Override
    public int[] add(int[] arr, int index, int num) {
        //索引判断
        if (index >= 0 && index < arr.length) {
            //新建一个数组 长度为原数组长度+1
            int[] newArr = new int[arr.length + 1];
            //循环取索引前的值
            for (int i = 0; i < index; i++) {
                newArr[i] = arr[i];
            }
            //添加元素
            newArr[index] = num;
            //循环取索引后的值
            for (int i = index; i < arr.length; i++) {
                newArr[i + 1] = arr[i];
            }
            System.out.println("添加成功");
            System.out.println("添加的元素为：" + num);
            return newArr;
        }
        System.out.println("添加失败，索引越界");
        return null;
    }

    //判断数组是否已满
    @Override
    public boolean isFull(int[] arr) {
        //遍历判断数组是否已满
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 0) {
                return false;
            }
        }
        return true;
    }
}
